Ext.namespace("crs.common");
crs.common.UserFormPanel = Ext.extend(Ext.FormPanel, {
	url : 'user_updateInfo.do',
	frame : true,
	width : 240,
	title : "用户信息修改",
	autoHeigth : true,
	closable : true,
	layout : "form",
	labelWidth : 100,
	labelAlign : "right",
	defaultType : "textfield",

	initComponent : function() {
		this.items = this.buildItems();
		this.buttons = this.buildButtons();
		this.listeners = {
			'render' : function(form) {
				form.getForm().loadRecord(getUserInfo());
			}
		};
		crs.common.UserFormPanel.superclass.initComponent.call(this);

		// this.initButtons();
	},
	buildItems : function() {
		return [
				{
					xtype : 'textfield',
					fieldLabel : '用户名 ',
					name : 'user.userName',
					width : 180,
					disabled : true
				},
				{
					xtype : 'textfield',
					inputType : 'password',
					fieldLabel : '原密 码',
					name : 'user.origPassword',
					width : 180,
					allowBlank : false,
					blankText : '原密码不能为空',
					minLength : 6,
					minLengthText : '密码的长度为[6-20]',
					maxLength : 20,
					maxLengthText : '密码的长度为[6-20]'
				},
				{
					xtype : 'textfield',
					inputType : 'password',
					fieldLabel : '新密 码',
					name : 'user.password',
					id : 'update_newPassword',
					width : 180,
					allowBlank : false,
					blankText : '新密码不能为空',
					minLength : 6,
					minLengthText : '密码的长度为[6-20]',
					maxLength : 20,
					maxLengthText : '密码的长度为[6-20]'
				},
				{
					xtype : 'textfield',
					inputType : 'password',
					fieldLabel : '确认新密码',
					name : 'user.passwordReTyping',
					id : 'update_reNewPassword',
					width : 180,
					allowBlank : false,
					blankText : '确认新密码不能为空',
					minLength : 6,
					minLengthText : '密码的长度为[6-20]',
					maxLength : 20,
					maxLengthText : '密码的长度为[6-20]',
					listeners : {
						'blur' : function(cmp) {
							// Save the fields we are going to insert values
							// into
							var pass1 = Ext.getCmp('update_newPassword')
									.getValue();
							if (pass1 != cmp.getValue()) {
								cmp.markInvalid("两次输入的密码不一致!");
							}
						}
					}
				},
				{
					xtype : 'textfield',
					fieldLabel : '单位名称或姓名',
					name : 'user.companyName',
					width : 180,
					allowBlank : false,
					blankText : '单位名称或姓名不能为空',
					maxLength : 50,
					maxLengthText : '长度不能超过50个字符',
					listeners : {
						'blur' : function(comp) {
							if (getUserInfo().get("user.companyName") == comp
									.getValue()) {
								return;
							}
							Ext.Ajax.request({
								url : 'user_nameExist.do',
								params : {
									'user.companyName' : comp.getValue()
								},
								success : function(response, opts) {
									var rp = Ext.decode(response.responseText);
									if (rp.success == false) {

										// 根据ajax请求返回的数据信息手动的进行设置该字段无效 on
										// 表示用户名已被使用，字段无效，显示错误提示信息
										comp.markInvalid(rp.message);
									}
								},
								scope : this
							});
						}
					}

				}, {
					xtype : 'combo',
					fieldLabel : '证件类型 ',
					hiddenName : 'user.IDType',
					triggerAction : "all",
					width : 180,
					allowBlank : false,
					editable : false,
					blankText : '证件类型不能为空',
					store : idTypeStore,
					displayField : "text",
					valueField : 'value',
					mode : 'local'

				}, {
					xtype : 'textfield',
					fieldLabel : '证件号码 ',
					name : 'user.IDNumber',
					allowBlank : false,
					blankText : '证件号码不能为空',
					width : 180,
					maxLength : 50,
					maxLengthText : '证件号码的长度不超过50个字符'

				}, /*
					 * { xtype : 'combo', fieldLabel : ' 国家 ', hiddenName :
					 * 'user.country', triggerAction : "all", value : '', width :
					 * 180, store : countryStore, emptyText : '请选择国家...', mode :
					 * 'local' }, { xtype : 'combo', fieldLabel : ' 省份 ',
					 * hiddenName : 'user.province', triggerAction : "all",
					 * width : 180, value : '', store : provinceStore, emptyText :
					 * '请选择省份...', mode : 'local' }, { xtype : 'textfield',
					 * fieldLabel : ' 城市 ', name : 'user.city', width : 180,
					 * maxLength : 50, maxLengthText : '长度不超过50个字符' },
					 */{
					xtype : 'textfield',
					fieldLabel : '详细地址 ',
					name : 'user.detailAddress',
					blankText : '详细地址不能为空',
					allowBlank : false,
					width : 180,
					maxLength : 100,
					maxLengthText : '长度不超过100个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : '邮政编码 ',
					name : 'user.postalcode',
					blankText : '邮政编码不能为空',
					allowBlank : false,
					width : 180,
					maxLength : 20,
					maxLengthText : '长度不超过20个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : '联系人 ',
					name : 'user.contact',
					blankText : '联系人不能为空',
					allowBlank : false,
					width : 180,
					maxLength : 50,
					maxLengthText : '长度不超过50个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : '电话号码 ',
					name : 'user.contactNumber',
					blankText : '电话号码不能为空',
					allowBlank : false,
					width : 180,
					maxLength : 50,
					maxLengthText : '长度不超过50个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : '手机号码 ',
					name : 'user.phoneNumber',
					blankText : '手机号码不能为空',
					allowBlank : false,
					width : 180,
					maxLength : 50,
					maxLengthText : '长度不超过50个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : '传真 ',
					name : 'user.fax',
					allowBlank : false,
					blankText : '可选填，格式：027-888888',
					width : 180,
					maxLength : 50,
					maxLengthText : '长度不超过50个字符'

				}, {
					xtype : 'textfield',
					fieldLabel : ' E-mail ',
					allowBlank : false,
					blankText : '邮箱不能为空',
					name : 'user.email',
					width : 180,
					maxLength : 50,
					maxLengthText : '长度不超过50个字符'

				} ];
	},
	buildButtons : function() {
		return [ {
			text : '修改',
			type : 'button',
			handler : function() {
				var newPwdCmp = Ext.getCmp('update_newPassword');
				var reNewPwdCmp = Ext.getCmp('update_reNewPassword');

				if (newPwdCmp.getValue() != reNewPwdCmp.getValue()) {
					reNewPwdCmp.markInvalid("两次输入的密码不一致!");
					return;
				}
				if (!this.getForm().isValid())
					return;

				Ext.Ajax.request({
					url : 'user_updateInfo.do',
					params : this.getForm().getValues(),
					success : function(response) {
						var resp = Ext.decode(response.responseText);
						if (resp.success == true) {
							Ext.Msg.alert('提示', '修改成功!');
						} else {
							Ext.Msg.alert('错误', resp.message);
						}
					},
					scope : this
				});

			}.createDelegate(this)
		}, {
			text : '重置',
			type : 'button',
			handler : function() {
				this.getForm().reset();

			}.createDelegate(this)
		} ];
	}
});
Ext.reg("userFormPanel", crs.common.UserFormPanel);